package com.itheima.system.mapper;

import com.itheima.system.pojo.Permission;
import com.itheima.system.pojo.Role;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Set;

/**
 * @author IntelliJ IDEA
 * @date 2020/10/26  9:24
 */
public interface RoleMapper {

    /**
     * 分配权限
     */
    void assignPrem(@Param("roleId") String roleId,@Param("permIds") List<String> permIds);

    /**
     * 添加角色
     */
    Integer addRole(Role role);

    /**
     * 更新角色
     */
    Integer updateRoleByRoleId(Role role);

    /**
     * 根据id删除角色
     */
    Integer deleteRoleById(@Param("id") String id);

    /**
     * 根据id查询角色信息
     */
    Role findRoleById(@Param("id") String id);

    /**
     * 根据companyId查询该企业下的所有角色
     */
    List<Role> findAllRole(@Param("companyId") String companyId);

    /**
     * 根据roleId批量删除中间表
     */
    void deleteRoleAndPermissionByRoleId(@Param("roleId") String roleId);

    /**
     * 根据权限id的集合批量查询权限集合
     */
    Set<Permission> findBatchPermissionByPermIds(@Param("permIds") Set<String> permIds);

    /**
     * 根据权限的父id和type=3查询当前权限的子权限（api权限）
     */
    Set<Permission> findBatchPermissionApiBySet(@Param("pids") Set<String> pids);

    /**
     * 给角色设置权限
     */
    void setRoleAndPermission(@Param("roleId") String roleId, @Param("permIds") Set<String> permIds);

    /**
     * 根据用户id查询角色结合
     */
    Set<String> findRoleIdsByUserId(@Param("userId") String userId);

    /**
     * 根据user的id查询所有角色的id
     */
    Set<String> findRoleSetByUserId(@Param("userId") String userId);

}
